package br.com.guarana.util
{
	import mx.collections.ArrayCollection;
	import mx.core.Application;
	import mx.formatters.CurrencyFormatter;
	import mx.formatters.DateFormatter;
	import mx.formatters.NumberFormatter;
	import mx.utils.ObjectUtil;
	import mx.utils.URLUtil;
	
	public class FormUtil
	{
		
		/* **** FUNÇÃO PARA FORMATAR DATA **** */
		public static function formatDate(data:Date):String{
			var dataFormatter:DateFormatter = new DateFormatter();
			dataFormatter.formatString = "DD/MM/YYYY";
			return dataFormatter.format(data);
		}
		
		public static function formatDateHour(data:Date):String{
			var dataFormatter:DateFormatter = new DateFormatter();
			dataFormatter.formatString = "DD/MM/YYYY - JJ:NN";
			return dataFormatter.format(data);
		}
		/* **** FUNÇÃO PARA FORMATAR DATA **** */
		
		
		/* **** FUNÇÃO PARA FORMATAR VALORES**** */
		public static function formatCurrencyValue(number:Number):String{
			var cf:CurrencyFormatter = new CurrencyFormatter();
			cf.precision = 2;
			cf.currencySymbol = "";
			cf.decimalSeparatorFrom = ".";
			cf.decimalSeparatorTo = ",";
			cf.thousandsSeparatorFrom = ",";
			cf.thousandsSeparatorTo = ".";
			return cf.format(number);
		}
		
		public static function formatStringToNumber(str:String):Number{
			var nf:NumberFormatter = new NumberFormatter();			
			nf.decimalSeparatorFrom = ",";
			nf.decimalSeparatorTo = ".";
			nf.thousandsSeparatorFrom = ".";
			nf.thousandsSeparatorTo = ",";
			nf.useThousandsSeparator = false;
			return Number(nf.format(str));
		}
		/* **** FUNÇÃO PARA FORMATAR VALORES**** */
		
		
		/* **** FUNÇÃO PARA BUSCAR INDEX DO ARRAY **** */
		public static function retornaIndexCollection(collection:ArrayCollection, item:String, property:String):int{
			var res:int = 0;
			for (var i:int = 0; i < collection.length; i++){
				if ((typeof collection[i]) != 'string'){
					if (collection[i][property] == item){
				    	res = i;
				    	break;
					}
				}
			}
			return res;
		}
		/* **** FUNÇÃO PARA BUSCAR INDEX DO ARRAY **** */
		
		
		/* **** FUNÇÃO PARA PASSAR PARA O JAVA A DATA DESCONSIDERANDO O HORARIO DE VERAO **** */
		public static function dateFlexToJava(dataFlex:Date):Date{
			if (dataFlex==null)
				return null;
			var diffTimezone:int = (180-dataFlex.getTimezoneOffset()) / 60;
			dataFlex.setHours(dataFlex.getHours()+diffTimezone);
			return dataFlex;
		}
		/* **** FUNÇÃO PARA PASSAR PARA O JAVA A DATA DESCONSIDERANDO O HORARIO DE VERAO **** */
		
				
		/* **** FUNÇÃO QUE RETORNA O CAMINHO DA PASTA DE UPLOAD **** */
		public static function retornaCaminhoPastaUpload(str:String):String{
			if (str==null || str=='') {
				return '';
			} else {
				return 'http://' + URLUtil.getServerNameWithPort(Application.application.url) + '/aspenfiles/' + str;
			}
		}
		/* **** FUNÇÃO QUE RETORNA O CAMINHO DA PASTA DE UPLOAD **** */
		
		
		/* **** FUNÇÃO QUE PREENCHE ZEROS A ESQUERDA **** */		
		public static function preencheZerosAEsquerda(str:String, qtde:int):String{
			if (str == null) 
				return "";
								
			var s:String = String(ObjectUtil.copy(str));
			while (s.length < qtde) {
				s = '0' + s;
			}
			s = s.substring(0, qtde);
			
			return s;
		}
		/* **** FUNÇÃO QUE PREENCHE ZEROS A ESQUERDA **** */
	}
}